#pragma once

#include "GkGpuProgram.h"

namespace gk
{
	struct ConstantBuffer
	{
		GpuProgramConstantTableHandle	m_hGpuProgramTable;

		// Access functions
		void							SetConstant(GpuProgramConstantHandle hConstant, TextureHandle hTexture);
		void							SetConstant(GpuProgramConstantHandle hConstant, float v);
		void							SetConstant(GpuProgramConstantHandle hConstant, float* v, cr::size_t num);
		void							SetConstant(GpuProgramConstantHandle hConstant, cr::Vec4fRef v);
		void							SetConstant(GpuProgramConstantHandle hConstant, cr::Matrix4fRef v);

		ConstantBufferInternal			m_internal;
	};

	typedef cr::Handle<ConstantBuffer> ConstantBufferHandle;
}